package _go

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func reverseList(head *ListNode) *ListNode {
	if head == nil || head.Next == nil {
		return head
	}

	var pre *ListNode //返回的头结点 也是 表示链表的前一个节点
	curr := head      //当前节点

	//当前节点不空 继续循环
	for curr != nil {
		//记录下一个节点
		next := curr.Next

		//向前节点指向前一个节点
		curr.Next = pre

		//向后移动 当前节点负值给前一个节点
		pre = curr
		//当前节点变成下一个节点
		curr = next
	}
	return pre
}
